Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

12 Stron V  « < 6 7 8 9 10 > »   
Reply to this topicStart new topic
> [klasa] Zaawansowany parser bbcode (php5), advanced bbcode parser
mlawnik
post
Post #141





Grupa: Zarejestrowani
Postów: 455
Pomógł: 49
Dołączył: 12.04.2010

Ostrzeżenie: (0%)
-----


@nekomata, poprawione.
Go to the top of the page
+Quote Post
evolucja
post
Post #142





Grupa: Zarejestrowani
Postów: 362
Pomógł: 27
Dołączył: 14.09.2009

Ostrzeżenie: (0%)
-----


Jak korzystać z tej zajawki? Mam w pętli wyświetlanie newsów. W miejscu na treść dodałem:
  1. $bbcode = new BbCode();
  2. $bbcode->getSettings()->trustText = true;
  3. $bbcode->parse($news['content']);
  4. echo $bbcode->cutText(150);

W efekcie otrzymuję kompletnie różnej długości teksty. Jedne mają kilka wyrazów, inne wyświetlają się prawie całe. W zależności od tego jaką liczbę wstawię w cutText to teksty zmieniają swoją długość - jak było kilka zdań to teraz pokazuje się jeden wyraz i odwrotnie.
Co robić?

Ten post edytował evolucja 8.05.2011, 18:33:24
Go to the top of the page
+Quote Post
wookieb
post
Post #143





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




A na jakiej podstawie mogę stwierdzić co jest źle skoro tych tekstów nie otrzymałem?
Pamiętaj o białych znakach bo skrypt ich nie rozróżnia od "rzeczywistych" znaków.
Powód edycji: [wookieb]:
Go to the top of the page
+Quote Post
evolucja
post
Post #144





Grupa: Zarejestrowani
Postów: 362
Pomógł: 27
Dołączył: 14.09.2009

Ostrzeżenie: (0%)
-----


No spróbuj sobie do tego $news['content'] wpisać np.:
Kod
Akademia Piłkarska posiada swoje logo. Grafiką, symbolami i kolorystyką nawiązuje do logo założyciela szkółki Klubu Sportowego Górnik Wesoła. Jest to okrągły znaczek z biało - zielono - czarnymi barwami klubowymi z dodatkiem koloru żółtego. Jak przystało na prawdziwą akademię nakryty jest [b]biretem[/b] symbolizującym edukację młodocianych adeptów sztuki piłkarskiej.

u mnie efekt to:
Kod
Akademia...


Ten post edytował evolucja 8.05.2011, 18:30:22
Go to the top of the page
+Quote Post
wookieb
post
Post #145





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Zbadaj tekst za pomocą var_dump i sprawdź czy nie maasz białych znaków na początku.
Go to the top of the page
+Quote Post
evolucja
post
Post #146





Grupa: Zarejestrowani
Postów: 362
Pomógł: 27
Dołączył: 14.09.2009

Ostrzeżenie: (0%)
-----


1. Wychodzi string(397) podczas gdy tekst wklejony w Wordzie pokazuje liczbę znaków(ze spacjami): 369. Gdy zmienię liczbę ze 150 do 100 tekst skraca do takiej postaci:
Kod
Akademia Piłkarska posiada swoje logo. Grafiką, symbolami i kolorystyką nawiązuje do logo założyciela szkółki Klubu Sportowego Górnik Wesoła. Jest to okrągły znaczek z biało - zielono - czarnymi...


_________
W tym skracaniu musi być jakiś błąd. To nie wina żadnych białych znaków- próbowałem nawet przepisać tekst od początku. Niemożliwe aby z parametrem 260 skracało do jednego wyrazu a z 250 nie skracało prawie w ogóle.



2. Czy tag URL nie powinien też działać gdy poda się sam adres strony w tagach? np.:
Kod
[url]www.google.pl[/url]


3. Da się jakoś zmusić tag IMG do działania z względnymi adresami URL? Na przykład kod:
Kod
[img]photos/thumbs/akademia_logo.png[/img]

otworzony na stronie http://strona.pl/katalogstrony1/ wyświetliło by obrazek
Kod
http://strona.pl/katalogstrony1/photos/thumbs/akademia_logo.png
?

Ten post edytował evolucja 9.05.2011, 16:39:55
Go to the top of the page
+Quote Post
wookieb
post
Post #147





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Cytat(evolucja @ 9.05.2011, 17:38:09 ) *
W tym skracaniu musi być jakiś błąd. To nie wina żadnych białych znaków- próbowałem nawet przepisać tekst od początku. Niemożliwe aby z parametrem 260 skracało do jednego wyrazu a z 250 nie skracało prawie w ogóle.

Sprawdzę choć nie chce mi się wierzyć.

Cytat
2. Czy tag URL nie powinien też działać gdy poda się sam adres strony w tagach? np.:
Kod
[url]www.google.pl[/url]

Tak też działa, tylko że URL musi zaczynać się do http. To faktycznie troszkę bardzo restrykcyjne. Poprawię.

Cytat
3. Da się jakoś zmusić tag IMG do działania z względnymi adresami URL? Na przykład kod:
Kod
[img]photos/thumbs/akademia_logo.png[/img]

otworzony na stronie http://strona.pl/katalogstrony1/ wyświetliło by obrazek
Kod
http://strona.pl/katalogstrony1/photos/thumbs/akademia_logo.png
?

Założeniem było podawanie url-i do rzeczywistych obrazków. Jeżeli chcesz to wyłączyć to filters/image.class.php linia 85 sprawdza czy adres jest URL-em.
Dodatkowo musisz upewnić się, że wyłączyłeś sprawdzanie rzeczywistych rozmiarów zdjęcia (flaga $checkRealImageSize filters/image.class.php)
Go to the top of the page
+Quote Post
evolucja
post
Post #148





Grupa: Zarejestrowani
Postów: 362
Pomógł: 27
Dołączył: 14.09.2009

Ostrzeżenie: (0%)
-----


Łap paczkę z przykładem. Coś z kodowaniem nawet jest nie tak... Wszystko zapisywane w UTF-8, nie wiem czemu więc tak jest.
POBIERZ

U mnie efekt tego skryptu to:
Kod
string(16) "W czwartek 21…"


Ten post edytował evolucja 9.05.2011, 19:06:32
Go to the top of the page
+Quote Post
wookieb
post
Post #149





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Ok poprawione.
Dzięki za znalezienie błędu (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
mlawnik
post
Post #150





Grupa: Zarejestrowani
Postów: 455
Pomógł: 49
Dołączył: 12.04.2010

Ostrzeżenie: (0%)
-----


Można prosić o numery linijek i typy zmian? Staram się na bieżąco updateować to w moim projekcie.
Go to the top of the page
+Quote Post
wookieb
post
Post #151





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Jasne.
Linia 1357 bbcode.class.php
  1. $node['text'] = mb_substr(
  2. $node['text'], 0,
  3. $length,
  4. $this->settings->charset);
Go to the top of the page
+Quote Post
mlawnik
post
Post #152





Grupa: Zarejestrowani
Postów: 455
Pomógł: 49
Dołączył: 12.04.2010

Ostrzeżenie: (0%)
-----


Poprawiłem i przypominam, że repo z kilkoma nowymi małymi ficzerami i aktualnymi poprawkami @wookieb leży tu:

https://github.com/marcinlawnik/BBcode-modified
Go to the top of the page
+Quote Post
evolucja
post
Post #153





Grupa: Zarejestrowani
Postów: 362
Pomógł: 27
Dołączył: 14.09.2009

Ostrzeżenie: (0%)
-----


Cytat(wookieb @ 9.05.2011, 20:40:31 ) *
Ok poprawione.
Dzięki za znalezienie błędu (IMG:style_emoticons/default/smile.gif)

Dzięki również. Mógłbyś rzucić okiem jeszcze na tą paczkę? Coś sobie z kodowaniem ostatniego znaku(jeśli jest znakiem polskim) nie radzi.
http://akademiawesola.pl/test_skracania.rar

Cytat(mlawnik @ 9.05.2011, 21:21:54 ) *
Poprawiłem i przypominam, że repo z kilkoma nowymi małymi ficzerami i aktualnymi poprawkami @wookieb leży tu:

https://github.com/marcinlawnik/BBcode-modified

Jakie te funkcjonalności są? To znaczy, że paczka z pierwszego postu nie ma w sobie aktualnych poprawek?
Go to the top of the page
+Quote Post
mlawnik
post
Post #154





Grupa: Zarejestrowani
Postów: 455
Pomógł: 49
Dołączył: 12.04.2010

Ostrzeżenie: (0%)
-----


Poprawki są od strony 6, nie wiem, ale chyba wookieb je uploaduje.
Oprócz tego na nowy podmieniony jest odtwarzacz youtube i coś tam jeszcze.

Ten post edytował mlawnik 10.05.2011, 15:21:07
Go to the top of the page
+Quote Post
wookieb
post
Post #155





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Tak wrzuciłem Twoje poprawki mlawnik
Projekt jest już na githubie pod adresem
https://github.com/wookieb/bbcode

Proszę o dodawanie informacji o bugach właśnie tam.
Jeżeli ktoś nie ma konta może również pisać tutaj.
Powód edycji: [wookieb]:
Go to the top of the page
+Quote Post
mlawnik
post
Post #156





Grupa: Zarejestrowani
Postów: 455
Pomógł: 49
Dołączył: 12.04.2010

Ostrzeżenie: (0%)
-----


Katalogi z SVN-a ci się skopiowały.

Przydałby się .gitignore

Znowu coś ze skracaniem wyrazów:

Zrzut bazy:

  1. --
  2. -- Table structure for table `Levels`
  3. --
  4.  
  5. CREATE TABLE IF NOT EXISTS `Levels` (
  6. `ID_lvl` smallint(6) NOT NULL,
  7. `Question` text COLLATE utf8_unicode_ci NOT NULL
  8. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
  9.  
  10. --
  11. -- Dumping data for table `Levels`
  12. --
  13.  
  14. INSERT INTO `Levels` (`ID_lvl`, `Question`) VALUES
  15. (1, 'Najpierw sprawdzimy czy nie jesteś idiotą. \nPytanie brzmi: 2+2*2 jest?'),
  16. (2, 'Jak nazywa się konstruktor tego karabinu?\r\n [.img]http://ttg.webuda.com/lvl2/aks.PNG[./img]'),
  17. (3, 'Najbardziej dochodowy film w historii?\r\n'),
  18. (4, 'Od jakiego słowa pochodzi nazwa "Google"?\r\n'),
  19. (5, '01010011011000010110110101101111011000110110100001101111011001000111101001101001
    01101011\r\n'
    ),
  20. (6, 'Ile grodzi wodoszczelnych miał RMS Titanic?\r\n[.img]http://ttg.webuda.com/lvl6/tytanik.PNG[./img]\r\n'),
  21. (7, 'Jaką tablicę mają Tworzanice?(Chodzi o pierwsze trzy litery)\r\n[.img]http://ttg.webuda.com/lvl7/tab.png[./img]\n'),
  22. (8, 'Jak [.b]naprawdę[./b] nazywa się autor Sztuki Wojennej?\r\n\r\n[youtube]http://www.youtube.com/watch?v=wtaja8lkEdk[/youtube]\r\n'),
  23. (9, 'Jaka litera jest na szczysie tzw."Tablicy Snellena"?\r\n\r\n[.img]http://www.ttg.webuda.com/lvl10/snellen.PNG[./img]');



Kod:
  1. //connection
  2. if (!($conn = mysql_connect($db_hostname, $db_username, $db_password))) {
  3. print("$LANG[db_connect_error]");
  4. error_log("$LANG[db_connect_error]\r\n", 3, '../log/db.log');
  5. }
  6.  
  7. //encoding
  8. mysql_set_charset('utf8', $conn);
  9.  
  10. //db selection
  11. if (!($db = mysql_select_db($db_name, $conn))) {
  12. print $LANG['db_select_error'];
  13. error_log("$LANG[db_select_error]\r\n", 3, '../log/db.log');
  14. }
  15.  
  16. //display db table
  17. $result = mysql_query("SELECT * FROM Levels");
  18. if (!$result) {
  19. die("$LANG[db_query_error]");
  20. }
  21.  
  22. $table_display = '<table border=\'1\'><tr>';
  23.  
  24. $table_display .= "<td>$LANG[level]</td><td>$LANG[question]</td><td>$LANG[edit]</td>";
  25.  
  26. $table_display .= "</tr>\n";
  27. // printing table rows
  28. while($row = mysql_fetch_row($result))
  29. {
  30. $table_display .= '<tr>';
  31.  
  32. // $row is array... foreach( .. ) puts every element
  33. // of $row to $cell variable
  34. foreach($row as $cell)
  35. if(mb_strlen($cell) >= 3){
  36.  
  37. $bb = new BbCode();
  38. $bb->parse($cell, false);
  39. $cut_cell = $bb->cutText(30);
  40. $table_display .= "<td>$cut_cell</td>";
  41. }
  42. else{
  43. $table_display .= "<td>$cell</td>";
  44. }
  45. $table_display .= "<td><img src=\"../templates/$CONF[template]/img/page_edit.png\">
  46. </td>";
  47. $table_display .= "</tr>\n";
  48. }


(IMG:http://i54.tinypic.com/1zbza75.png)

Coś zrobiłem źle, czy to wina skryptu?

Kropki w zrzucie są specjalnie, bo forum wyświetlało obrazki (IMG:style_emoticons/default/wink.gif)

Ten post edytował mlawnik 20.06.2011, 20:44:29
Go to the top of the page
+Quote Post
wookieb
post
Post #157





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Hmm u mnie wszystko śmiga elegancko bez żadnych problemów.
Sprawdź czy na pewno wszystko z twoim kodowaniem OK ale najpierw popraw wszystkie błedy E_NOTICE.
Powód edycji: [wookieb]:
Go to the top of the page
+Quote Post
mlawnik
post
Post #158





Grupa: Zarejestrowani
Postów: 455
Pomógł: 49
Dołączył: 12.04.2010

Ostrzeżenie: (0%)
-----


U autora zawsze śmiga (IMG:style_emoticons/default/wink.gif)

live demo:

yopqsdev.orchestra.io/admin

admin
samplepassword

https://github.com/marcinlawnik/Yopqs/blob/.../admin/edit.php


---------------------
EDIT
A gdzie te E_NOTICE?

Ten post edytował mlawnik 20.06.2011, 21:25:32
Go to the top of the page
+Quote Post
wookieb
post
Post #159





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Miałeś starą wersję parsera.
Zassaj nową.
Wrzuciłem jedną poprawkę, ale nie dotyczyła ona twojego błędu.
Go to the top of the page
+Quote Post
mlawnik
post
Post #160





Grupa: Zarejestrowani
Postów: 455
Pomógł: 49
Dołączył: 12.04.2010

Ostrzeżenie: (0%)
-----


Faktycznie, trochę lepiej. Zobaczę kodowanie, i dam znać.

Czy jest możliwość utworzenia osobnej "czystej" gałęzi z samym kodem, bez przykładów?
Chciałbym dodać sobie twój parser jako submoduł, i nie bawić się w ciągłe poprawki.
Go to the top of the page
+Quote Post

12 Stron V  « < 6 7 8 9 10 > » 
Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 12:13